/*
洗盘子
Bessie 和 Canmuu 将联手洗掉N (1<= N <= 10,000) 个脏盘子。
Bessie 洗; Canmuu 来擦干它们.
每个盘子有一个指定的编号，范围1..N. 开始,所有盘子按顺序排列在栈中，1号盘子在顶端，N号盘子在底端.
Bessie 会先洗一些盘子，然后放在洗过的盘子栈里（这样原来的顺序颠倒）.
然后，或者她洗别的盘子，或者Canmuu 擦干她已经洗好的部分或全部盘子，放在擦干的盘子栈里。
这样直到所有盘子洗完擦干后放置的顺序是什么？

Input
第一行: 一个整数N，表示盘子的数量
以下若干行: 每一行两个整数 ，第一整数为1表示洗盘子，为2表示擦盘子，第二个整数表示数量

Output
共N行:擦干后盘子从顶端到底端的顺序

Sample Input
5
1 3
2 2
1 2
2 3

Sample Output
1
4
5
2
3
*/
#include <iostream>
#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n,i,flag,sum;
    string name,web;
    stack<int> p0,p1,p2;//p0=初始盘，p1=洗了的盘，p2=擦了的盘
    cin>>n;
    for(i=n;i>=1;i--)
    {
        p0.push(i);//生成从上到下=从1到n的盘子栈
    }
    while(cin>>flag>>sum)
    {
        if(flag==1)
        {
            for(i=1;i<=sum;i++)
            {
                p1.push(p0.top());
                p0.pop();
            }
        }
        else if(flag==2)
        {
            for(i=1;i<=sum;i++)
            {
                p2.push(p1.top());
                p1.pop();
            }
        }
        if(p0.empty() && p1.empty())
        {
            break;
        }
    }
    while(!p2.empty())//擦干后盘子从顶端到底端的顺序
    {
        cout<<p2.top()<<endl;
        p2.pop();
    }

    return 0;
}